<?php 

	class ConfiguracionSedesController extends AppController
	{
		
		public $uses = array('ConfiguracionSede','ConfiguracionModulo','ConfiguracionSistema','Sede','ModuloSistema');	
	
		#---------------------------------------------------# 
		#------------Funciones Principales------------------#
		#---------------------------------------------------#
		public function index()
		{
			$this->layout = 'default_ini';	
		}
		
		public function validar_configuracion_sede()
		{
			$this->layout = 'default_ini';	
			$this->llenar_combobox_sede();
			if ($this->request->is('post') || $this->request->is('put'))
			{
				debug($this->request->data);
				$this->postValidarConfiguracionSede();
				//$this->redirect(array('action' => 'assign_configuracion',$this->request->data['ConfiguracionSistema']['configuracion_sistema_id']));
				//$this->infoPostConfiguracion($this->request->data['ConfiguracionSistema']['configuracion_sistema_id']);
			}
			
		}
		
		public function consultar_configuracion_sede()
		{
			$this->layout = 'default_ini';	
			$this->InfoConsultConfiguracionSede();
			if ($this->request->is('post') || $this->request->is('put'))
			{
				
				$this->postAssignConfiguracionSede();
				//$this->redirect(array('action' => 'assign_configuracion',$this->request->data['ConfiguracionSistema']['configuracion_sistema_id']));
				//$this->infoPostConfiguracion($this->request->data['ConfiguracionSistema']['configuracion_sistema_id']);
			}
			
		}
		
	
		#---------------------------------------------------#
		#------------Funciones Secundarias------------------#
		#---------------------------------------------------#
		private function setMessageFlash($id,$mensaje,$nombre_mensaje)
		{
			if (is_null($nombre_mensaje))
			{
				$nombre_mensaje = 'flash';
			}
			switch ($id) 
			{
				case 1: // mensaje bueno
					$this->Session->setFlash($mensaje,'default',array('class'=>'success'),$nombre_mensaje);
					break;
				case 2: // mensaje malo
					$this->Session->setFlash($mensaje,'default',array('class'=>'error-message'),$nombre_mensaje);
					break;
				case 3: // mensaje cuidado
					$this->Session->setFlash($mensaje,'default',array('class'=>'notice'),$nombre_mensaje);
					
					break;
				
				default:
					
					break;
			}
		}
		
		public function getListaModulo($id_sede)
		{
			$sede = $this->Sede->findById($id_sede);
			$this->getConfiguracionSede($sede['Sede']['configuracion_sistema_id']);
		}
		public function getNombreConfiguracion($id_sede)
		{
			$this->layout = false;
			if ($this->request->is('get')) 
			{
				$conf = $this->ConfiguracionSistema->query(
														'SELECT *
															FROM configuracion_sistemas CS, 
															sedes S
															WHERE S.configuracion_sistema_id = CS.id
															AND S.id = '.$id_sede
													);
				$this->set('conf',$conf);
				
				$this->render('/Elements/NombreConfiguracionLabel');
			}
		}
		
		public function getComboBoxConfiguracion()
		{
			
			$this->layout = false;
			if ($this->request->is('get')) 
			{
				$this->llenar_combobox_configuracion();
				
				$this->render('/Elements/ComboBoxConfiguracion');
			}
			
		}
		
		public function getConfiguracionSede($id_configuracion)
		{
			
			$this->layout = false;
			if ($this->request->is('get')) 
			{
				
				$modulo_configuracion = $this->ConfiguracionSistema->query(
																			'SELECT MS_1 . * , MS_2 . * , 
																				COALESCE( MS_2.nombre_modulo_sistema,  "NINGUNO" ) AS NOMBRE_MODULO_PER,
																				COALESCE( MS_1.descripcion_modulo_sistema,  "No Posee" ) as DESCRIPCION_MODULO
																				FROM configuracion_modulos CM, configuracion_sistemas CS, 
																				modulo_sistemas MS_1 
																				LEFT OUTER JOIN modulo_sistemas MS_2 ON MS_2.id = MS_1.modulo_sistema_id
																				WHERE CM.configuracion_sistema_id = CS.id
																				AND CM.modulo_sistema_id = MS_1.id
																				AND CS.id = '.$id_configuracion
																	);
				
				
				$this->set('modulo_conf',$modulo_configuracion);
				$this->render('/Elements/ModulosConfiguracion');
			}
		}
		private function InfoConsultConfiguracionSede()
		{
			$this->llenar_combobox_sede();
		}
		private function postAssignConfiguracionSede()
		{
			$sede = $this->Sede->findById($this->request->data['ConfiguracionSistema']['sede_id']);
			if ($sede)
			{
				$configuracion = $this->ConfiguracionSistema->findById($this->request->data['ConfiguracionSistema']['configuracion_id']);
				if ($configuracion)
				{
					$sede['Sede']['configuracion_sistema_id'] = $this->request->data['ConfiguracionSistema']['configuracion_id'];
					if ($this->Sede->save($sede))
					{
						$this->setMessageFlash(1, 'se asigno la configuracion a la sede', null);
						$this->redirect(array(
													'controller' => 'ConfiguracionSistemas',
													'action' => 'index'
												));
					}
					else
					{
						$this->setMessageFlash(2, 'no se guardo', null);
					}
				}
									
				
			}
			else 
			{
				
			}
		}
		
		private function llenar_combobox_sede()
		{
			$sedes = $this->Sede->find('all');
			$arreglo = array();
			array_push($arreglo, array (0 => 'Seleccione Una Opcion'));
			
			foreach ($sedes as $sede) 
			{
					array_push($arreglo,array ($sede['Sede']['id'] => $sede['Sede']['nombre_sede']));
			}
			
			$this->set('sedes',$arreglo);
	
		}
		private function llenar_combobox_configuracion()
		{
			$configuracions = $this->ConfiguracionSistema->find('all');
			$arreglo = array();
			array_push($arreglo, array (0 => 'Seleccione Una Opcion'));
			
			foreach ($configuracions as $configuracions) 
			{
					array_push($arreglo,array ($configuracions['ConfiguracionSistema']['id'] => $configuracions['ConfiguracionSistema']['nombre_configuracion']));
			}
			
			$this->set('configuracions_combo',$arreglo);
	
		}
		public function llenar_info_config()
		{
			$configuracions = $this->ConfiguracionSistema->query(
																	'SELECT * 
																		FROM configuracion_sistemas, 
																		configuracion_modulos CM
																		WHERE CM.configuracion_sistema_id = CS.id'
																);
			$modulos = $this->ModuloSistema->query('SELECT *
															FROM modulo_sistemas MS
															WHERE MS.modulo_sistemas IS NULL'
												);
			$sub_modulos = $this->ModuloSistema->query(
														'SELECT * 
															FROM modulo_sistemas MS_1, modulo_sistemas MS_2
															WHERE MS_1.ID = MS_2.modulo_sistemas
															AND MS_1.modulo_sistemas IS NULL'
												);	
			$this->set('modulos',$modulos);
			$this->set('sub_modulos',$sub_modulos);
			$this->set('configuracions',$configuracions);
		}
		public function infoConfiguracionSede($id_sede,$id_configuracion)
		{
			$valor = $this->request->data['Assign']['valor'];
			switch ($valor) {
				case '1':
					$this->llenar_combobox_sede();
					break;
				case '2':
					
					$this->llenar_combobox_configuracion();
					$this->llenar_info_config();
					$this->set('id_configuracion',$id_configuracion);
					
					break;
				default:
					
					break;
			}
			
			$this->llenar_combobox_configuracion();
			$strqry = 'SELECT *
							FROM configuracion_sistemas CS, 
							configuracion_modulos CM, sedes S
							WHERE S.configuracion_sistema_id = S.id
							AND CS.configuracion_modulo_id = CM.id';
							
			if ($id_sede)
			{
				$strqry = $strqry. " S.id = ".$id_sede;
			}
			
			
			$configuracion = $this->ConfiguracionSistema->query($strqry);
			$this->set('configuracion',$configuracion);
		}
	
	}
?>
		